package com.bawei.handler_app

import android.os.*
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import android.widget.Toast

class MainActivity : AppCompatActivity() {
    private val handler = object : Handler() {
        override fun handleMessage(msg: Message) {
            super.handleMessage(msg)
            if(msg.what == 101){
                Toast.makeText(this@MainActivity,"请求成功",Toast.LENGTH_SHORT).show()
            }

        }
    }


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        //子线程发送消息给主线程
        Log.d("ytx", "onCreate: "+classLoader.javaClass.name)


        Looper.myQueue().addIdleHandler {
            Log.d("TAG", "闲着: ")
            true
        }


        Thread{
            Thread.sleep(5000);
            val message1 = Message()//方式一 每次都会new一个新的Message
            val message2 = Message.obtain()//方式二 消息池 每次都会复用消息池中空闲消息，节省资源
            val message3 = handler.obtainMessage()//方式三=方式二等价 Message.obtain(this);
            handler.sendEmptyMessageDelayed(101,5000)
//            handler.post(object :Runnable{
//                override fun run() {
//                    //chul
//                }
//            })

        }.start()
    }
    //当页面销毁的时候，将handler中正在处理和还未处理的消息清空，-》handler可以回收-》activity可以回收-》没有内存泄露现象
    override fun onDestroy() {
        super.onDestroy()
        if(handler != null){
            handler.removeCallbacksAndMessages(null)
        }

    }
}